package com.zhangye.test.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.zhangye.test.model.Category;
import com.zhangye.test.util.PageInfo;
import com.zhangye.test.util.Result;

/**
 * 视频分类
 * 作者： 张叶
 * 创建时间：2018年8月21日  下午4:32:17
 */
@Controller
@RequestMapping("admin/category")
public class CategoryController extends BaseController{
	
	/**
	 * ar列表
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:28
	 */
	@RequestMapping("/list")
	public String list(Model model){
		return "admin/category/list";
	}
	
	
	/**
	 * 分页显示 
	 * 作者：张叶
	 * 时间：2016年9月7日 上午11:58:15
	 */
	@ResponseBody
	@RequestMapping(value = "arJson" , method = RequestMethod.POST)
	public JSON arJson(PageInfo pageInfo, Integer rows, Integer page,
			String sidx, String sord, Model model, String name) {
		// 分页信息
		if (pageInfo == null) {
			pageInfo = new PageInfo();
		}
		if (pageInfo.getPage() < 2
				|| pageInfo.getPage() >= pageInfo.getTotalPage()) {
			pageInfo.setCount(0);
		}
		if (rows != null) {// 每页显示条数
			pageInfo.setPageSize(rows);
		}
		if (page != null) {// 当前页
			pageInfo.setPage(page);
		}
		String where = "";
		if(name != null && !"".equals(name)){
			where += " and name like '%" + name + "%'";
		}

		// 排序
		String order = "";
		if (sidx != null && sidx != "") {// 排序字段
			order = " order by " + sidx + " ";
			if (sord != null && sord != "") {// 排序
				order += sord;
			}
		}
		
		// 搜索条件
		List<Map<String,Object>> list = categoryService.selectByPage(pageInfo,where,order);
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("total", pageInfo.getTotalPage());
		data.put("list", list);
		return (JSON) JSON.toJSON(data);
	}

	
	/**
	 * 添加页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:36
	 */
	@RequestMapping("/addPage")
	public String addPage(Model model){
		String where = " and level = 1 order by code";
		List<Category> list = categoryService.selectByWhere(where);
		model.addAttribute("category",list);
		return "admin/category/add";
	}

	
	/**
	 * 添加页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:02:36
	 */
	@ResponseBody
	@RequestMapping("/add")
	public Result add(Category category){
		Result result = new Result();
		if(!"0".equals(category.getCode())){
			String where = " and code like '%" + category.getCode() + "%' and level = 2 order by id desc";
			List<Category> list = categoryService.selectByWhere(where);
			if(list.size() > 0){
				int code = Integer.parseInt(list.get(0).getCode()) + 1;
				category.setCode(code + "");
				category.setParentId(list.get(0).getId());
				category.setLevel(2);
			}else{
				where = " and code = '" + category.getCode() + "'";
				list = categoryService.selectByWhere(where);
				Category c = list.get(0);
				category.setCode(category.getCode() + "01");
				category.setParentId(c.getId());
				category.setLevel(2);
			}
		}else{
			String where = " and level = 1 order by code desc";
			List<Category> list = categoryService.selectByWhere(where);
			if(list.size() > 0){
				int code = Integer.parseInt(list.get(0).getCode()) + 1;
				category.setCode(code + "");
				category.setParentId(0L);
				category.setLevel(1);
			}else{
				category.setCode("10");
				category.setParentId(0L);
				category.setLevel(1);
			}
		}
		category.setCreatedAt(new Date());
		int i = categoryService.insert(category);
		if (i > 0) {
			result.code = 0;
			result.message = "添加成功";
		} else {
			result.code = 1;
			result.message = "系统错误，添加失败";
		}
		return result;
	}

	
	
	/**
	 * 修改页面
	 * 作者： 张叶
	 * 创建时间：2018年5月11日  下午2:07:05
	 */
	@RequestMapping("/updatePage/{id}")
	public String updatePage(@PathVariable("id") Long id,Model model){
		
		Category category = categoryService.selectByPrimaryKey(id);
		model.addAttribute("category",category);

		String where = " and level = 1 order by code";
		List<Category> list = categoryService.selectByWhere(where);
		model.addAttribute("categoryList",list);
		return "admin/category/update";
	}

	/**
	 * 修改
	 * 作者： 张叶
	 * 创建时间：2018年8月22日  下午4:12:27
	 */
	@ResponseBody
	@RequestMapping(value = "updateCategory", method = RequestMethod.POST)
	public Result updateCategory(Category category) {
		Result result = new Result();
		int i = categoryService.updateByPrimaryKey(category);
		if (i > 0) {
			result.code = 0;
			result.message = "添加成功";
		} else {
			result.code = 1;
			result.message = "系统错误，添加失败";
		}
		return result;
	}
	
	/**
	 * 删除
	 * 作者： 张叶
	 * 创建时间：2018年5月16日  上午9:57:52
	 */
	@ResponseBody
	@RequestMapping(value = "/delCategory/{id}", method = RequestMethod.POST)
	public String delCategory(@PathVariable Long id){
		try {
			int i = categoryService.deleted(id);
			if(i > 0 ){
				return "success";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "fail";
	}
	
	
	/**
	 * 获取二级分类
	 * 作者： 张叶
	 * 创建时间：2018年8月23日  上午10:07:51
	 */
	@ResponseBody
	@RequestMapping("/getItems/{id}")
	public List<Category> getItems(@PathVariable Long id){
		String where = " and parent_id = " + id;
		List<Category> list = categoryService.selectByWhere(where);
		return list;
	}
	
	
}
